import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText

from common.decorators import log4gs


@log4gs
class Mail(object):
    def __init__(self, name,  accredit, html,  to=''):
        self.HOST = 'smtp.exmail.qq.com'          # 腾讯服务器地址
        self.PORT = 25
        self.TITLE = "主题：综治中心实体化运维平台测试报告"
        self.FROM = name                          # 自己邮箱
        self.TO = to                              # 发送邮箱
        self.ACCREDIT = accredit                  # 腾讯QQ邮箱或腾讯企业邮箱必须使用授权码进行第三方登陆
        self.html = html

    def mail_send(self):
        # 创建用于发送带有附件文件的邮件对象
        # 1> related: 邮件内容的格式，采用内嵌的形式进行展示。
        message = MIMEMultipart('related')

        # 文档附件、图片附件等。
        # 一般如果数据是二进制的数据格式，在指定第二个参数的时候，都使用base64，一种数据传输格式。
        f = open(self.html, 'rb')  # HTML文件默认和当前文件在同一路径下，若不在同一路径下，需要指定要发送的HTML文件的路径
        mail_body = f.read()
        f.close()
        message_docx = MIMEText(mail_body, 'base64', 'utf8')
        message_docx.add_header('content-disposition', 'attachment', filename='测试报告.html')
        message.attach(message_docx)
        message_html = MIMEText(mail_body, 'html', 'utf-8')
        message.attach(message_html)
        message['FROM'] = self.FROM
        message['Subject'] = self.TITLE
        message['TO'] = self.TO
        self.fg = self.TO.split(',')
        try:
            smtp = smtplib.SMTP(self.HOST, self.PORT)
            # smtp.connect(HOST)
            smtp.login(self.FROM, self.ACCREDIT)
            smtp.sendmail(self.FROM, self.fg, message.as_string())
            self.log.info("发送邮件成功！！！")
            smtp.quit()
        except smtplib.SMTPException:
                self.log.error("发送邮件失败！！！")